#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int Mod=999999999;
const int Maxn=4160;
const int B=270;

int n,Q;
int a[Maxn][Maxn];

bool st;
int pos[Maxn][Maxn],cnt;
int L[Maxn][Maxn],U[Maxn][Maxn];
ll X[Maxn][Maxn],Y[Maxn][Maxn];
ll sm[Maxn];
bool ed;

inline int add(int x,int y){
	x+=y;
	return x>Mod?x-=Mod:x;
}

inline void modify(int x,int y,int w){
	int fm=pos[x][y];
	sm[fm]+=w;
	X[fm][x]+=w;
	Y[fm][y]+=w;
}
inline ll query(int p,int q){
	ll ans=0;
	for(int i=0;i<p/B;i++)
		for(int j=0;j<q/B;j++){
			int c=pos[i*B][j*B];
			ans+=sm[c];
		}
	for(int i=0;i<p/B;i++){
		int l=L[p][q],fm=pos[i*B][q];
		for(int j=l;j<=q;j++) ans+=Y[fm][j];
	}		
	for(int i=0;i<q/B;i++){
		int l=U[p][q],fm=pos[p][i*B];
		for(int j=l;j<=p;j++) ans+=X[fm][j];
	}		
	int y=L[p][q],x=U[p][q];
	for(int i=x;i<=p;i++)
		for(int j=y;j<=q;j++)
			ans+=a[i][j];		

	return ans;
}

int main(){
	freopen("fire.in","r",stdin);
	freopen("fire.out","w",stdout); 
//	cerr<<(&ed-&st)*1./1024/1024;

	scanf("%d%d",&n,&Q);
	
	for(int i=0;i<n;i++)
		for(int j=0;j<n;j++){
			L[i][j]=j/B*B;
			U[i][j]=i/B*B;
		}
	
	for(int i=1;i<=n/B+1;i++)
		for(int j=1;j<=n/B+1;j++){
			++cnt;
			for(int u=(i-1)*B;u<=min(i*B-1,n-1);u++)
				for(int v=(j-1)*B;v<=min(j*B-1,n-1);v++)
					pos[u][v]=cnt;
		}
	
	while(Q--){
		int opt;
		scanf("%d",&opt);
		if(opt==1){
			int d,x,op,w;
			scanf("%d%d%d%d",&d,&x,&op,&w);
			x--;
			if(d){
				if(op==1){
					for(int i=0;i<n;i++) modify(i,x,(a[i][x]&w)-a[i][x]),a[i][x]&=w;	
				}
				if(op==2){
					for(int i=0;i<n;i++) modify(i,x,(a[i][x]|w)-a[i][x]),a[i][x]|=w;
				}
				if(op==3){
					for(int i=0;i<n;i++) modify(i,x,(a[i][x]^w)-a[i][x]),a[i][x]^=w;
				}
				if(op==4){
					for(int i=0;i<n;i++) modify(i,x,add(a[i][x],w)-a[i][x]),a[i][x]=add(a[i][x],w);
				}
			}
			else{
				if(op==1){
					for(int i=0;i<n;i++) modify(x,i,(a[x][i]&w)-a[x][i]),a[x][i]&=w;	
				}
				if(op==2){
					for(int i=0;i<n;i++) modify(x,i,(a[x][i]|w)-a[x][i]),a[x][i]|=w;
				}
				if(op==3){
					for(int i=0;i<n;i++) modify(x,i,(a[x][i]^w)-a[x][i]),a[x][i]^=w;
				}
				if(op==4){
					for(int i=0;i<n;i++) modify(x,i,add(a[x][i],w)-a[x][i]),a[x][i]=add(a[x][i],w);
				}
			}
		}
		else{
			int p,q;
			scanf("%d%d",&p,&q);
			p--,q--;
			printf("%lld\n",query(p,q));
		}
	}

	return 0;
}
/*
4 8
1 0 2 3 5
1 1 3 4 2
2 3 4
1 1 4 2 6
1 0 1 4 7
2 4 4
1 1 2 1 3
2 2 2

*/

